// 创建axios实例,并配置拦截器

import axios from 'axios'
import t from '../utils/localToken'

// 创建axios实例
const myAxios = axios.create({
  baseURL: '/api',
})

// 配置拦截器

// 请求拦截器
myAxios.interceptors.request.use(function (config) {
  // 实际开发一般会在请求拦截器中往请求头中添加token.实现登录管理
  config.headers.token = t.getToken()
  return config
})

// 响应拦截器
myAxios.interceptors.response.use(
  function (response) {
    // 响应成功了触发
    // 这里返回什么,则请求成功的promise的value值就是什么
    return response.data
  },
  function (error) {
    //响应失败了触发
    // console.log('请求响应失败了', error)
    alert('请求响应失败了,请稍后再试')
    // 注意: 这个函数,相当于就是每一次发送请求我们自己写的tryCatch中的catch.把失败的promise捕获了,但是由于这个回调把失败的promise捕获了,所以没有失败的promise错误抛出到控制台,就会让浏览器认为代码是正常的,可以继续执行.

    // 我们写这个回调的目的:是为了统一的捕获请求响应失败的情况,统一的提示用户.简化我们的代码.但是我们也不希望请求响应之后的情况下,await后面的代码还可以继续运行.所以最终这个回调一定要人为的返回一个失败的promise.让await后续的代码不会执行
    return Promise.reject(error)
  }
)

export default myAxios
